package innerClass.memberInnerClass;

public class memberInnerClass01 {
    public static void main(String[] args) {
        var outer01 = new Outer01();

//        外部其他类访问内部成员类的三种方式
//        第一种
//        把new Inner08()当作是outer01的一个成员
//        Outer01.Inner01 inner01 = outer01.new Inner01();
//        第二种
//        在外部类中编写一个方法，可以返回一个inner08对象实例
//        var inner01 = outer01.getInner01();
//        inner01.say();
//        第三种方式
        var inner01 = new Outer01().new Inner01();

    }
}

class Outer01 {
    private int n1 = 10;
    public String name = "张三";

    private void hi() {
        System.out.println("私有方法hi");
    }

    class Inner01 {
        private double n1 = 99.9;  //重名时，遵守就近原则
        public void say() {
            System.out.println("n1=" + n1 + " Outer01的name" + name);
            System.out.println("外部类的n1 " );
            hi();
        }
    }

    public void t1() {
        Inner01 inner01 = new Inner01();
        inner01.say();
    }

    public Inner01 getInner01() {
        return new Inner01();
    }
}
